# -*- coding: utf-8 -*-
from django.http import HttpResponseRedirect
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse
from datetime import date
from apps.amway.forms.pedidos import * #AddPedidoClienteForm, AddProductoPedidoCliente, AddPedidoEmpresario
from apps.amway.models import Producto, Pedido, ProductosPedido, PreciosProducto
################################################################################
################################################################################
################################################################################
################################################################################
@login_required
def add_pedido_cliente(request, form_class=AddPedidoClienteForm):
    usuario = request.user
    if request.method == 'POST':
        form = form_class(request.POST)
        if form.is_valid():
            pedido = form.save(usuario)
            return HttpResponseRedirect(reverse('agregar_productos_pedido_cliente', kwargs={ 'pedido_id': pedido.codigo } ))

    else:
        form = form_class()
        
    return render_to_response("amway/pedidos/clientes/agregar_pedido_cliente.html",
                              { 'form' : form },
                                context_instance=RequestContext(request))
################################################################################
@login_required
def add_producto_pedido_cliente(request, pedido_id, form_class=AddProductoPedidoCliente):
    usuario = request.user
    pedido = Pedido.objects.get(pk=pedido_id)
    mensaje = ''
    if request.method == 'POST':
        form = form_class(request.POST)
        if form.is_valid():
            producto = Producto.objects.get(referencia__iexact=form.cleaned_data.get('producto'))
            try:
                prod_ped = ProductosPedido.objects.get(producto=producto, pedido=pedido)
                mensaje = u'Este producto ya se encuentra dentro de este pedido, debe agregar un producto distinto.'
                return render_to_response("amway/pedidos/clientes/agregar_productos_pedido.html",
                                           { 'form' : form, 'mensaje' : mensaje, 'valor': pedido.valor },
                                            context_instance=RequestContext(request))            
            except ProductosPedido.DoesNotExist:
                form.save(usuario)
                return HttpResponseRedirect(reverse('agregar_productos_pedido_cliente', kwargs={ 'pedido_id': pedido_id } ))
    else:
        form = form_class()
        form.pedido_init_val(pedido_id)        
    return render_to_response("amway/pedidos/clientes/agregar_productos_pedido.html",
                               { 'form' : form, 'mensaje' : mensaje, 'valor': pedido.valor },
                               context_instance=RequestContext(request))
################################################################################
@login_required
def listar_pedidos(request):
    usuario = request.user
    pedidos = Pedido.objects.filter(usuario__exact=usuario, cliente__isnull=False)
    return render_to_response("amway/pedidos/clientes/listar_pedidos.html",
                              { 'pedidos' : pedidos },
                                context_instance=RequestContext(request))
################################################################################
@login_required
def ver_productos_pedido(request, pedido_id):
    productos = ProductosPedido.objects.select_related().filter(pedido__exact=pedido_id)    
    valor = productos[0].pedido.valor   
    return render_to_response("amway/pedidos/clientes/ver_productos_pedido.html",
                              { 'productos' : productos, 'codigo' : pedido_id, 'valor' : valor },
                                context_instance=RequestContext(request))    
################################################################################
@login_required
def add_pedido_empresario(request, form_class=AddPedidoEmpresario):
    usuario = request.user
    if request.method == 'POST':
        form = form_class(request.POST)
        if form.is_valid():
            pedido = form.save(usuario)        
            return HttpResponseRedirect(reverse('agregar_productos_pedido_empresario', kwargs={ 'factura_id': pedido.codigo } ))
    else:
        form = form_class()
        
    return render_to_response("amway/pedidos/empresarios/agregar_pedido_empresario.html",
                              { 'form' : form },
                                context_instance=RequestContext(request))
#################################################################################
@login_required
def add_producto_pedido_empresario(request, factura_id, form_class=AddProductoPedidoEmpresario):
    usuario = request.user
    pedido = Pedido.objects.get(pk=factura_id)   
    if request.method == 'POST':
        form = form_class(request.POST)
        if form.is_valid():
            producto = Producto.objects.get(referencia__iexact=form.cleaned_data.get('producto'))
            try:
                prod_ped = ProductosPedido.objects.get(producto=producto, pedido=pedido)
                mensaje = u'Este producto ya se encuentra dentro de este pedido, debe agregar un producto distinto.'
                return render_to_response("amway/pedidos/empresarios/agregar_productos_pedido.html",
                                           { 'form' : form, 'mensaje' : mensaje, 'valor': pedido.valor },
                                            context_instance=RequestContext(request))            
            except ProductosPedido.DoesNotExist:
                form.save(usuario)
                return HttpResponseRedirect(reverse('agregar_productos_pedido_empresario', kwargs={ 'factura_id': factura_id } ))
    else:
        form = form_class()
        form.pedido_init_val(factura_id)
        mensaje = ''
    return render_to_response("amway/pedidos/empresarios/agregar_productos_pedido.html",
                               { 'form' : form, 'mensaje' : mensaje, 'valor': pedido.valor },
                               context_instance=RequestContext(request))
#################################################################################
